package com.JavaBasic;

import java.io.File;
import java.io.IOException;
import java.util.Date;

public class FileDemo {
	public static void main(String[] args) throws IOException {
		// File构造
		File file1 = new File("newFile.txt");

		// 创建文件
		boolean result = file1.createNewFile();
		System.out.println("创建newFile文件成功:" + (result ? "是" : "否"));
		
		// 判断文件是否存在
		System.out.println("newFile文件存在:" + (file1.exists() ? "是" : "否"));
		
		// 创建文件夹
		File file2 = new File("a");
		boolean s = file2.mkdir();
		System.out.println("创建a文件夹成功:" + (s ? "是" : "否"));
		
		// 床架多级目录
		File file3 = new File("a/b");
		boolean s1 = file3.mkdirs();
		System.out.println("在a目录下创建b目录成功:" + (s1 ? "是" : "否"));
		
		// 文件和文件夹的删除
		boolean s2 = file1.delete();
		boolean s3 = file2.delete();
		boolean s4 = file3.delete();
		System.out.println("删除newFile.txt文件成功:" + (s2 ? "是" : "否"));
		System.out.println("删除a文件夹成功:" + (s3 ? "是" : "否"));
		System.out.println("删除a文件夹下的b文件夹成功:" + (s4 ? "是" : "否"));
		
		// 文件重命名
		// 在相同路径下是改名
		// 在不同路径下,剪切并改名
		File file4 = new File("a.txt");
		File file5 = new File("b.txt");
		file4.createNewFile();
		boolean s5 = file4.renameTo(file5);
		System.out.println("重命名a.txt文件为b.txt:" + (s5 ? "是" : "否"));
		
		// 判断是否是文件或文件夹
		System.out.println("a是文件夹:" + (file2.isDirectory() ? "是" : "否"));
		System.out.println("b.txt是否是文件:" + (file5.isFile() ? "是" : "否"));
		
		// 判断是否可读写
//		file5.setReadable(false);
//		file5.setWritable(false);
		System.out.println("b.txt是否可读:" + (file5.canRead() ? "是" : "否"));
		System.out.println("b.txt是否可写:" + (file5.canWrite() ? "是" : "否"));
		
		// 判断是否是隐藏文件
		System.out.println("b.txt是否是隐藏文件:" + (file5.isHidden() ? "是" : "否"));
		
		// 获取文件或文件夹的绝对路径
		System.out.println("b.txt的绝对路径是:" + file5.getAbsolutePath());
		
		// 获取文件或文件夹的相对路径
		System.out.println("b.txt的相对路径是:" + file5.getPath());
		
		// 获取文件或文件夹的名字
		System.out.println("b.txt的名字是:" + file5.getName());
		
		// 获取文件的大小,单位是字节(如果传的是文件夹路径返回0)
		File file6 = new File("c.txt");
		System.out.println("c.txt的大小是" + file6.length());
		
		// 获取文件最后修改时间
		long lastTime = file6.lastModified();
		Date date = new Date(lastTime);
		System.out.println("c.txt最后修改时间是:" + date);
		
		// 获取文件夹下的所有文件或文件夹(以字符串的形式)
		File file7 = new File("/Users/mrchen/Desktop/Java/JavaBasicDemo/src/com/JavaBasic");
		String[] liStrings = file7.list();
		System.out.println("获取文件夹下所有文件或文件夹(以字符串的形式):");
		for (String string : liStrings) {
			System.out.println(string);
		}
		
		// 获取文件夹下所有文件或文件夹(以File对象的形式)
		File[] listFiles = file7.listFiles();
		System.out.println("获取文件夹下所有文件或文件夹(以File对象的形式):");
		for (File file : listFiles) {
			System.out.println(file);
		}
		
	}
}
